package com.java.yz.day14.ketang;

/*
    java提供了一个类Thread用于描述线程和让我们创建一个线程对象java实现多线程的方式;

    1、继承Thread类

    2、实现Runnable接口

    3、实现callable接口，结合线程池使用


 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        //如何获取主线程的名称呢？
        System.out.println(Thread.currentThread().getName());
        //通过打印发现主线程的名字还是main
        //Thread.currentThread()获取当前方法所在的线程

        //创建一个线程对象

        //也可以通过构造方法来起名字，当然了对应的子类要有其对应的构造方法
        MyThread t1 = new MyThread("杨镇");  //Thread-0  默认从0开始
        //多线程环境下要创建多个线程
        MyThread t2 = new MyThread("洪燕");  //Thread-1
        //启动线程
        //如果只是单纯的调用run方法，和普通对象调用成员方法没有任何区别，依旧是单线程程序
        //t1.run();
        //t2.run();
        //而我们想要的效果是t1和她t2两个线程应该是互相抢CPU的执行权，谁先打印完1000不确定
        //真正的调用线程应该是线程类调用start方法去启动线程

        //在这里调用setname可以重起名字
//        t1.setName("杨镇");
//        t2.setName("洪燕");

        //设置线程的优先级
        //public final void setPriority(int newPriority)更改此线程的优先级。
        //能够获取就能够设置优先权
        //优先级的范围值  [1 , 10]
        //优先级高的不一定先执行，程序的执行具有随机性

        t1.setPriority(1);
        t2.setPriority(10);


        //默认线程优先级别是多少呢?
        //获取线程的优先级public final int getPriorityO)
        System.out.println("t1线程的优先级:"+t1.getPriority());
        System.out.println( "t2线程的优先级;"+t2.getPriority());
        //t1线程的优先级:5
        //t2线程的优先级;5

        //调用该线程只是代表它有执行的资格
        t1.start();
        t2.start();


    }
}
